package com.ta.gulimall.cart.view.vo;

import cn.hutool.core.collection.CollUtil;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 商品总价动态计算，不需要传入
 */
@Data
@Accessors(chain = true)
public class Cart {
    List<CartItem> items;  // 购物车商品项
    Integer itemCount; // 商品数量
    Integer itemTypeCount; // 商品类型数量
    BigDecimal totalPrice; // 总价
    BigDecimal reduce = new BigDecimal("0"); // 减免价格

    public Integer getItemCount(){
        if (CollUtil.isEmpty(this.items)) {
            return 0 ;
        }
        return this.items.stream().mapToInt(CartItem::getCount).sum();
    }

    public Integer getItemTypeCount() {
        if (CollUtil.isEmpty(this.items)) {
            return 0 ;
        }
        return this.items.size();
    }

    public BigDecimal getTotalPrice() {
        BigDecimal totalPrice = new BigDecimal(0.0);
        if (CollUtil.isEmpty(this.items)) {
            return totalPrice ;
        }

        for (CartItem f : items) {
            totalPrice = totalPrice.add(f.getPrice().multiply(new BigDecimal(f.getCount())));
        }
        return totalPrice.subtract(reduce);
    }
}







